
package com.gitlab.bootren.aliyun.oss;

import com.aliyun.oss.model.ObjectListing;
import com.aliyun.oss.model.ObjectMetadata;

import java.io.File;
import java.io.InputStream;

/**
 * 文件存储服务
 *
 * @author serv
 */
public interface FileClientService {


    /**
     * 存储一个文件
     *
     * @param data 文件内容
     * @param key 文件名称，可以带路径
     * @return 上传后的文件详细信息
     */
    public FileResult saveFile(byte[] data,String key) throws Exception;
    /**
     * 存储一个文件
     *
     * @param data 文件内容
     * @param key 文件名称，可以带路径
     * @param metadata OSS中Object的元数据。
     * @return 上传后的文件详细信息
     */
    public FileResult saveFile(byte[] data,String key,ObjectMetadata metadata) throws Exception;
    /**
     * 存储一个文件
     *
     * @param data 文件内容流
     * @param key 文件名称，可以带路径
     * @param length 数据大小
     * @return 上传后的文件详细信息
     */
    public FileResult saveFile(InputStream data,String key,long length) throws Exception;


    /**
     * 存储一个文件
     * @param file 文件内容
     * @return 上传后的文件详细信息
     */
    public FileResult saveFile(File file) throws Exception;

    /**
     * 存储一个文件
     * @param file 文件内容
     * @param metadata OSS中的Object的元数据
     * @return 上传后的文件详细信息
     */
    public FileResult saveFile(File file,ObjectMetadata metadata) throws Exception;


    /**
     * 列出文件，超过100个返回100个
     * @param prefix 20182/
     * @return
     * @throws Exception
     */
    public ObjectListing listFiles(String prefix) throws Exception;


    /**
     * 根据文件的key获取对应的url地址
     * @param key
     * @return
     */
    public String getUrl(String key);


}
